<!DOCTYPE html>
<html>
	<head>
		<meta charset="UTF-8">
		<title></title>
	</head>
	<body>
		<pre>
1.面向过程（函数）
即面向细节、面向函数来实现需求，其关注点是“做什么”。

2.面向对象（OOP）  Object Oriented(面向对象)
面向对象关注的是“谁来做”，而这个“谁”就是一个对象，具体怎么做交给它。

3.面向对象的思想:继承,多态,封装
继承就是子类继承父类的特征和行为，使得子类对象（实例）具有父类的实例域和方法，
或子类从父类继承方法，使得子类具有父类相同的行为。
		食草动物:兔子,羊
动物→→
		食肉动物:狼,狗
	
多态是同一个行为具有多个不同表现形式或形态的能力。
多态就是同一个接口，使用不同的实例而执行不同操作
多态的优点
	1. 消除类型之间的耦合关系
	2. 可替换性
	3. 可扩充性
	4. 接口性
	5. 灵活性
	6. 简化性
	同一个事件发生在不同的对象上,会产生不同的结果
封装是指一种将抽象性函式接口的实现细节部份包装、隐藏起来的方法。
封装可以被认为是一个保护屏障，防止该类的代码和数据被外部类定义的代码随机访问。
要访问该类的代码和数据，必须通过严格的接口控制。
封装最主要的功能在于我们能修改自己的实现代码，而不用修改那些调用我们代码的程序片段。
适当的封装可以让程式码更容易理解与维护，也加强了程式码的安全性。
封装的优点
1. 良好的封装能够减少耦合。
2. 类内部的结构可以自由修改。
3. 可以对成员变量进行更精确的控制。
4. 隐藏信息，实现细节。

//简单可以理解为：
var obj = new Object( );

obj 是对象，Object 是类。

对象是类的实例和具体，类是对象的集合。
举个例子：如果说类是女朋友的话，对象就是你的女朋友

//定义第一个人
var obj1 = new Object();
obj1.name = "邱哲";
obj1.sex = "男";
obj1.age = "24";
obj1.interest = "网上冲浪";
obj1.sayHello = function(){
	console.log(this.name+"是18");
}

//定义第二个人
var obj2 = new Object();
obj2.name = "许鑫";
obj2.sex = "女";
obj2.age = "22";
obj2.interest = "吃火锅";
obj2.sayHello = function(){
	alert(this.name);
}

//定义第三个人
var obj3 = new Object();
obj3.name = "小梦";
obj3.sex = "男";
obj3.age = "29";
obj3.interest = "发呆";
obj3.sayHello = function(){
	alert(this.name);
}

obj1.sayHello();
obj2.sayHello();
obj3.sayHello();

如果很多人的话，那么这个代码就得写很多遍

简单写法---
function factory(name,sex,age,interest,work){
	var obj = new Object();
	obj.name = name;
	obj.sex = sex;
	obj.age = age;
	obj.work = work;
	obj.interest = interest;
	obj.sayHello = function(){
		alert(this.name);
	}
	return obj;
}
var obj1 = factory("小刚","男","24","网上冲浪", "销售"); //这就是每个实例
var obj2 = factory("小兰","女","22","吃火锅");
var obj3 = factory("小梦","男","29","发呆");

对比一下，通过封装，代码量减少了很多，整体也优雅了许多。这就是面向对象思想的一个小小体现。
		</pre>
	</body>
</html>
